from pynput import mouse
import threading
import time

# 定义一个标志变量来控制程序是否应该继续运行
running = True

def on_click(x, y, button, pressed):
    if button == mouse.Button.left:
        if pressed:
            # 鼠标左键按下
            print('A')
        else:
            # 鼠标左键松开
            print('B')

def stop_listener_after_timeout(timeout):
    # 等待指定的时间
    time.sleep(timeout)
    # 设置全局标志变量为False来停止监听器
    global running
    running = False

# 创建一个监听器，监听鼠标点击事件
listener = mouse.Listener(on_click=on_click)

# 启动监听器
listener.start()

# 创建一个定时器线程，20秒后停止监听器
timeout_thread = threading.Thread(target=stop_listener_after_timeout, args=(20,))
timeout_thread.start()

print("监听器已启动，20秒后自动结束...")

# 保持程序运行，直到全局标志变量变为False或者用户手动停止（例如按下Ctrl+C）
try:
    while running:
        time.sleep(0.1)  # 避免CPU使用率过高
except KeyboardInterrupt:
    # 当用户按下Ctrl+C时退出循环并停止监听器
    listener.stop()
    print("监听器被用户手动停止")

# 等待定时器线程结束（虽然在这个例子中不是必需的，因为主线程会先退出）
timeout_thread.join()

# 停止监听器（如果它还没有被停止的话）
if running:  # 这个检查实际上是多余的，因为running应该已经被设置为False了
    listener.stop()

print("程序结束")
